﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTServices.Dominio;
using System.Data.SqlClient;

namespace RESTServices.Persistencia
{
    public class LiquidacionDAO
    {
        WSHorarios.Horario horario = null;

        public Liquidacion Crear(Liquidacion liquidacionACrear)
        {
            WSHorarios.HorariosClient wsHorarios = new WSHorarios.HorariosClient();
            horario=wsHorarios.ObtenerHorario(1);

            Liquidacion liquidacionNueva = null;
            string sql = "INSERT INTO tb_liquidacion VALUES (@item,@fecha, @peaje,@detrac,@horario)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@item", liquidacionACrear.Item));
                    com.Parameters.Add(new SqlParameter("@fecha", liquidacionACrear.Fecha));
                    //com.Parameters.Add(new SqlParameter("@peaje", horario.));
                    //com.Parameters.Add(new SqlParameter("@detrac", liquidacionACrear.MontoDetraccion));
                    //com.Parameters.Add(new SqlParameter("@horario", horario.Item));
                    com.ExecuteNonQuery();
                }
            }
            liquidacionNueva = Obtener(liquidacionACrear.Item);
            return liquidacionNueva;
        }

        public Liquidacion Obtener(int item)
        {
            Liquidacion liquidacionExistente = null;
            string sql = "SELECT * FROM tb_liquidacion WHERE item=@item";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@item", item));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            liquidacionExistente = new Liquidacion()
                            {
                                Item = (int)resultado["item"],
                                Fecha = (DateTime)resultado["fecha"],
                                MontoPeaje = (double)resultado["montoPeaje"],
                                MontoDetraccion = (double)resultado["montoDetraccion"],
                                NumProgramacion = (int)resultado["numProgramacion"],
                            };
                        }
                    }
                }
            }
            return liquidacionExistente;
        }
    }
}
	